const {
  readFileSync
} = require('fs');
const {
  domain,
  port
} = require('../config');

//读取文件封装
function readFile(path) {
  /**
   * 读取文件
   * readFileSync()
   * @params1 路径
   * @params2 编码格式
   */
  return readFileSync(path, 'utf8');
}

//创建菜单项模板<li></li>
function createMenuItem(filename, userDomain, userPort, isActive) {
  //localhost:3000/src/html/xxx.html
  return `
    <li class="menu-item${isActive ? ' active' : ''}">
      <a href="${_formatBaseUrl(userDomain,userPort)}/src/html/${filename}" target="myFrame">${filename.replace('.html',' ')}</a>
    </li>
  `;
}

//组合baseUrl
function _formatBaseUrl(userDomain, userPort) {
  userPort = Number(userPort);

  if (userDomain && userPort) {

    //当用户传了域名和端口时
    return `${userDomain}:${userPort}`;
  } else if (userDomain && !userPort) {

    //当用户只传了域名时
    return `${userDomain}`;
  } else if (!userDomain && userPort) {

    //当用户只传了端口时 返回默认域名 + 用户端口
    return `${domain}:${userPort}`;
  } else if (!userDomain && !userPort) {

    //用户没有传值时 返回默认域名和端口
    return `${domain}:${port}`;
  } else {

    //返回默认域名和端口
    return `${domain}:${port}`;
  }
}

/**
 * 替换html
 * @param {*} regexp 正则
 * @param {*} html html字符串
 * @param {*} content 自定义的内容
 */
function replaceHtml(regexp, html, content) {
  // console.log(html.match(regexp)[1]);
  //<!--menu list--> 这是一个用于标注替换位置的注释

  //将注释位置 插入要替换的内容(<li></li>)
  return html.replace(html.match(regexp)[1], content);
}

//创建iframe
//iframe 元素会创建包含另外一个文档的内联框架
function createIframe(filename, userDomain, userPort) {
  return `
    <iframe src="${_formatBaseUrl(userDomain,userPort)}/src/html/${filename}" name="myFrame"></iframe>
  `;
}

module.exports = {
  readFile,
  createMenuItem,
  replaceHtml,
  createIframe
}